package smallfrench.moteur.lexer.lexemes;

import smallfrench.moteur.lexer.Position;

/**
 * Classe immuable représentant un <i>token</i>, un lexème.
 * @author antoine1023
 *
 */
public class Lexeme {

	/**
	 * La position du début du lexème.
	 */
	public final Position debut;

	/**
	 * La position de la fin du lexème.
	 */
	public final Position fin;

	/**
	 * Le type du lexème.
	 */
	public final TypeLexeme type;

	/**
	 * Crée un nouveau lexème.
	 * @param type
	 * @param debut
	 * @param fin
	 */
	public Lexeme(TypeLexeme type, Position debut, Position fin) {
		this.debut = debut;
		this.fin = fin;
		this.type = type;
	}

	@Override
	public String toString() {
		return "Lexeme{type : " + type
				+ " ; début : " + debut
				+ " ; fin : " + fin + "}";
	}
}
